// 导入通用请求工具
import { request, type ApiResponse } from './request'


// 验证验证码请求参数 
export interface VerifyCodeRequest {
  email: string
  verificationCode: string
}

// 重置密码请求参数
export interface ResetPwdRequest {
  email: string
  authCode: string
  password: string
}

// 登录接口请求参数
export interface LoginRequest {
  username: string
  password: string
}

// 登录响应数据类型
export interface LoginResponseData {
  userId: number
  nickname: string
  roleId: number
}

/**
 * 用户登录接口
 * @param params 登录参数
 * @returns Promise<ApiResponse<LoginResponseData>>
 */
export const login = async (params: LoginRequest): Promise<ApiResponse<LoginResponseData>> => {
  try {
    // 以 JSON 发送，匹配服务端期望的媒体类型，避免 415
    return await request<LoginResponseData>('auth/login', {
      method: 'POST',
      body: params,
      credentials: 'omit' // 不携带跨域 Cookie；依赖服务端在头或体返回 token
    })
  } catch (error) {
    console.error('登录失败:', error)
    throw new Error('网络请求失败，请检查网络连接')
  }
}


/**
 * 发送验证码
 * @param email 邮箱地址
 * @returns Promise<ApiResponse<string>>
 */
export const sendVerificationCode = async (email: string): Promise<ApiResponse<string>> => {
  try {
    return await request<string>('auth/sendCode', {
      method: 'GET',
      params: { email },
      skipDefaultHeaders: true
    })
  } catch (error) {
    console.error('发送验证码失败:', error)
    throw new Error('网络请求失败，请检查网络连接')
  }
}



/**
 * 重置密码（/auth/resetPwd）
 */
export const resetPassword = async (params: ResetPwdRequest): Promise<ApiResponse<boolean>> => {
  try {
    return await request<boolean>('auth/resetPwd', {
      method: 'POST',
      body: params
    })
  } catch (error) {
    console.error('重置密码失败:', error)
    throw new Error('网络请求失败，请检查网络连接')
  }
}
